using System;
using System.Collections.Generic;
using Myotragus.Data.Domain;
using NHibernate;

namespace Myotragus.Data.Criteria
{
	public interface ILocalizableQueryBuilder<TEntity> : IQueryBuilder
		where TEntity : IEntity
	{
		void AddResultTransformer(ICriteria criteria, Type entityImplementation);

		void AddProjection(ICriteria criteria, int lcId);

		void AddAliases(ICriteria criteria, int lcId, IEnumerable<string> properties);

		void AddMatchingCriteria(ICriteria criteria, object pattern);

		void AddLikeCriteria(ICriteria criteria, object pattern);

		ICriteria CreateCriteria(int lcId);

		ICriteria CreateMatchingCriteria(int lcId, object pattern);

		ICriteria CreateLikeCriteria(int lcId, object pattern);
	}
}